<%@ include file="/common/taglibs.jsp"%>
<!--分页查询共用的页面-->
<%@ include file="/common/common.jsp"%>
<%@ include file="/common/dateUtil.jsp"%>
<%@ page language="java" pageEncoding="UTF-8"%>

<head>
	<script type="text/javascript" src="<%=jsPath%>/jquery/jquery.timers.js"></script><!--定时器-->
<style>

</style>


<script>

////////////////////////初始化页面
//定义数组，用于存储报警类型和报警来源
var activeSafeName = "主动安全报警";//全局定义主动安全报警为本数据
var alarmSourcesData = null;
var params = {};//定义查询条件
var readyFlg = false;//标明页面加载完成标记
var newPageTitle = "主动安全报警详细信息查看";//主动安全报警页面查询中弹出页面标题

//定义数据表格
$(function(){
	//数据表格
	$("#adasAlarmData").datagrid({
		// width:"100%",
		height:"100%",
		// toolbar:"#adasAlarmToobar",//工具条
		pagination:true,
		pageList:[15,30,50,100],
		pageSize:15,
		singleSelect:true,
		rownumbers:true,
		striped:true,
		fitColumns: true,
		checkOnSelect: false,
		selectOnCheck: false,
		onDblClickRow : function(rowIndex,rowData){
			//双击添加查询子页面
			var param = "?alarmIndex=" + rowData.alarmIndex + "&id=" + rowData.id;
			var url = "<%=ApplicationPath%>/activeSafeAlarm/oneAdasAlarmInfo.action" + param;
			addTabToMainTabs(url, newPageTitle);
		}
	});
});

//表单重置方法
function formReset(){
	document.getElementById("adasQueryForm").reset();
}

//查询条件中日期和车组的校验
function validateDate() {
	var startTime = $("#startTime").val();
	var endTime = $("#endTime").val();
	return Utility.validateTime(startTime,endTime);
}


//页面加载完成后初始化方法
$(document).ready(function(){
	///初始化时间
	var now = Utility.today();
	$("#startTime").val(now + " 00:00:00");
	$("#endTime").val(now + " 23:59:00");

	//创建下拉部门树
	Utility.createDepTree("depId");

	//初始化报警类型和报警来源相关信息
	initAlarmInfo();

	//查询按钮事件定义
	$("#btnQuery").click(function(){
		getAlarmData();
		//重新定义页面为第一页
		params.pageNumber = 1;
		//显示第一页
		setFirstPage();
		//查询数据
		
		
		getAjaxData();
		
	});

	//选择页面事件定义
	$("#adasAlarmData").datagrid("getPager").pagination({
		onSelectPage:function(pageNumber,pageSize){
			// console.log("开始选择页面");
			if (readyFlg) {
				//设置新的页面信息
				initPageParams();
				// console.log(params);
				//查询数据
				getAjaxData();
			}	
		}
	});



//加载完成
	readyFlg = true;
});



//设置页面为显示第一页
function setFirstPage() {
	var opts = $("#adasAlarmData").datagrid("options");
	var pager = $("#adasAlarmData").datagrid("getPager");
	opts.pageNumber = 1;
	opts.pageSize=params.pageSize;
	pager.pagination("refresh", {
		pageNumber: 1,
		pageSize: opts.pageSize
	});
}

/*
从服务器请求数据
1.校验查询条件是否合法
2.格式化查询条件
3.请求数据
4.如果返回数据合法，则填充数据
*/
//请求数据
function getAlarmData(){
	//校验数据
	if(validateDate()){
		//校验速度值
		let str = $("#ac_al_speed").val();
		let speed = 0.0;
		if(str != ""){
			let speed = isNaN(parseFloat(str)) ? -1.0 : parseFloat(str);
		}
		if(str == "" || speed >= 0.0)
		{
			initParams();//格式化查询条件	
		}else{
			DataUtil.showErrorMsg("请输入合法的速度值!");
			console.log("请输入合法的速度值!");
		}
	}
}



//格式化查询条件
function initParams(){
	params = {};//清空数据
	//获取分页信息
    initPageParams();
	//获取基本查询信息
	params.plateNo = $("#plateNo").val();
	
	params.startTime = $("#startTime").val();//开始时间
	params.endTime = $("#endTime").val();//结束时间

	//获取选择树种选中的类型
    var treeSelected = $("#depId").combotree("tree").tree("getSelected");
	
    if(treeSelected!= null){
		var depIdTemp = treeSelected.id;
		// console.log("depIdTemp="+depIdTemp);
		try {
			depIdTemp = parseInt(depIdTemp);
		} catch (error) {
			console.error("获取查询条件中转换错误"+error);
		}
		if(depIdTemp != undefined){
			params.depId=depIdTemp;//获取depId
		}else{
			params.depId=0;
		}
		
    }

	//获取报警类型和报警来源
	getAlarmParams();


	//获取速度值
	let str = $("#ac_al_speed").val();
	if(str != ""){
		if(!isNaN(parseFloat(str))){
			params.speed = parseFloat(str);
		}
	}


	// console.log("params:");
	// console.log(params);
}

//获取页面信息并配置到参数对象中
function initPageParams(){
	params.pageNumber = $("#adasAlarmData").datagrid("getPager").data("pagination").options.pageNumber;
	params.pageSize = $("#adasAlarmData").datagrid("getPager").data("pagination").options.pageSize;
}

/*
根据下拉框选项，获取选择信息
1.获取报警来源和报警类型的选择文本，
2.如果报警来源为请选择，那么不设置参数，即全查询
	如果报警来源为“主动安全报警”，那么参数名字设置为alarmName，值为“主动安全报警”,报警类型不为不选择的话，类型参数为：alarmType和alarmTypeName
	如果报警来源为其他，那么设置参数alarmSource，为其值，如果报警类型不为请选择，那么设置参数alarmType，值为其他
*/
function getAlarmParams(){
	try {
		var alarmTypeText = $("#alarmType").combobox("getText");
		if(alarmTypeText){
			//获取是否选择了合法的类型
			var dataTemp = getAlarmTypeValue(activeSafeName, alarmTypeText);
			if (dataTemp != null) {
				//合法，选择单个类型查看
				params.alarmSource = dataTemp.alarmSource;
				params.alarmType = dataTemp.alarmType;
			}else{
				//空，则全查询,获取所有类型
				params.alarmSourceList = getAlarmSourceValues(activeSafeName);
			}
		}//end alarmTypeText
	} catch (error) {
		console.error(error);
	}

}

//获取主动安全报警的所有数据
function getAlarmSourceValues(alarmSourceName){
	var alarmSources = new Array();
	if(alarmSourcesData != null){
		for(var i=0 ; i< alarmSourcesData.length ; i++){
			if(alarmSourcesData[i].alarmSourceName == alarmSourceName){
				//如果数组中不存在该来源信息，则加入
				if(alarmSources.indexOf(alarmSourcesData[i].alarmSource) <= -1)
				{
					alarmSources.push(alarmSourcesData[i].alarmSource);
				}
			}
			
		}
	}
	return alarmSources;
}


//获取一条报警来源数据
function getAlarmSourceValue(alarmSourceName){
	if(alarmSourcesData != null){
		for(var i=0 ; i< alarmSourcesData.length ; i++){
			if(alarmSourcesData[i].alarmSourceName == alarmSourceName)
				return alarmSourcesData[i];
		}
	}else{
		return null;
	}
}

//获取一条报警类型数据，根据来源和类型文字,使用
function getAlarmTypeValue(alarmSourceName,alarmTypeName){
	if(alarmSourcesData != null){
		for(var i=0 ; i< alarmSourcesData.length ; i++){
			if(alarmSourcesData[i].alarmSourceName == alarmSourceName && alarmSourcesData[i].alarmTypeName == alarmTypeName)
				return alarmSourcesData[i];
		}
	}else{
		return null;
	}
}



//根据值，获取数据,用于从服务器查询数据后，补充类型和来源描述用，由addData方法调用
function getAlarmTypeData(alarmSource,alarmType){
	if(alarmSourcesData != null){
		for(var i=0 ; i< alarmSourcesData.length ; i++){
			if(alarmSourcesData[i].alarmSource == alarmSource && alarmSourcesData[i].alarmType == alarmType)
				return alarmSourcesData[i];
		}
	}else{
		return null;
	}
}

//导出excel
function forExport(){
	try {
		console.log(params);
		if (params.alarmSource != undefined) {
			$("#alarmSource").val(params.alarmSource);
		}
		if (params.alarmType != undefined) {
			$("#alarmType_1").val(params.alarmType);
		}
		if (params.alarmSourceList != undefined) {
			$("#alarmSourceList").val(JSON.stringify(params.alarmSourceList));
		}
		$("#adasQueryForm").attr("target", "_blank"); //弹屏下载
		$("#adasQueryForm").submit();
		$("#adasQueryForm").attr("target", "");
	} catch (error) {
		console.log("导出错误："+error);
	}
	
}


/*
查询数据，并根据返回情况进行数据填充
*/
function getAjaxData(){

	// console.log("查询所需参数：" , params);
	var jsonData = JSON.stringify(params);
	$("#adasAlarmData").datagrid("getPager").pagination("loading");
	let url = "<%=ApplicationPath%>/activeSafeAlarm/getAdasPageData.action";
	Utility.showLoading();
	Utility.getAjaxData(url,jsonData,function(data){
		Utility.hideLoading();
		$("#adasAlarmData").datagrid('loadData',data);//绑定数据
		$("#adasAlarmData").datagrid("getPager").pagination("loaded");//刷新动画停止
	});
	
}
 

//初始化报警类型和报警来源相关信息
/*
1.获取报警数据
2.设置保存报警数据
3.填充报警类型

*/
function initAlarmInfo(){
	try {
		//获取报警数据
		$.ajax({
			type: "post",//请求方式
			url: "<%=ApplicationPath%>/activeSafeAlarm/getAlarmSources.action",
			data: null,
			contentType: "application/json;charset=utf-8",
			success: function (data) {
				//获取数值，赋值
				alarmSourcesData = data;
				// window.localStorage.setItem("alarmSourceList",JSON.stringify(data));
				// console.log("设置报警信息数据");
				//填充报警类型数据
				fillAlarmType();
				// console.log(data);
				// console.log(data.length);
				// console.log(data[3].alarmSourceName);
				
			}
		});
	} catch (error) {
		console.error("初始化报警相关下拉框错误"+error);
	}
	
}

/*
1.格式化数据
2.初始化报警来源下拉框，并填充数据，填充的选择框，值和文字都是报警来源的文字
3.定义下拉框选择事件，获取选择的信息，并以选择的文字为标准，去级联报警类型的显示，
		选择用文字级联的原因是里面有“主动安全报警”选项，该选项有多个值，所以以文字为标准

因为主动安全报警不需要其他来源，所以不需要alarmSource选项，本代码注释掉，不使用
author：shinion
date:2018-12-15
*/
/*
function fillAlarmSouce() {

	if (alarmSourcesData != null) {
		var alarmSouceArrayTemp = new Array();
		var arrayTemp = new Array;//临时数组，用于临时存放报警来源文字信息
		//填充第一条
		var objTemp = {text:"请选择",value:0};
		arrayTemp.push("请选择");
		alarmSouceArrayTemp.push(objTemp);
		if (alarmSourcesData.length > 0) {
			for (var i = 0; i < alarmSourcesData.length; i++) {
				var asTemp = alarmSourcesData[i].alarmSourceName;
				if(arrayTemp.indexOf(asTemp) <= -1){
					//如果临时数组中不包含该条报警来源，则加入
					arrayTemp.push(asTemp);
					alarmSouceArrayTemp.push({text:asTemp,value:(i+1)});
				}
			}//end for
			arrayTemp=[];
			
			//绑定数据
			if (alarmSouceArrayTemp != null) {
				$("#alarmSource").combobox({
					textField: "text",
					valueField: "value",
					data: alarmSouceArrayTemp,
					select:alarmSouceArrayTemp[0].value,
					onSelect:function(record){//选择事件
						// console.log(record.text);
						fillAlarmType(record.text);
					}
				});
			}

		}//end 
	}
}*/
/*
1.格式化数据，根据传值过来的文字，选择报警来源文字相同的报警类型文字，存入数据数组
2.初始化报警类型下拉框，并填充数据
*/
function fillAlarmType(){

	//首先，因为只有主动安全报警，那么就不需要其他报警信息，
	/*
	1.格式化数据，把非主动安全报警的数据去掉

	2.填充报警类型文字
	*/
	if(alarmSourcesData!= null){
		//筛选数据
		var dataTemp = new Array();
		for(var i=0 ; i<alarmSourcesData.length ; i++){
			if(alarmSourcesData[i].alarmSourceName == activeSafeName){
				dataTemp.push(alarmSourcesData[i]);
			}
		}
		alarmSourcesData = dataTemp;

		//填充数据
		var alarmTypeArrayTemp = new Array();//数据数组
		//填充第一条
		var objTemp = {text:"请选择",value:0};
		alarmTypeArrayTemp.push(objTemp);
		//开始填充数据
		for(var i=0 ; i<alarmSourcesData.length ; i++){
			var atTemp = alarmSourcesData[i].alarmSourceName;
			//数据数组中放入报警类型数据
			alarmTypeArrayTemp.push({text:alarmSourcesData[i].alarmTypeName,value:(i+1)});
		}
		// console.log(alarmTypeArrayTemp);
		//初始化下拉框控件并绑定数据
		if(alarmTypeArrayTemp != null){
			$("#alarmType").combobox({
				textField:"text",
				valueField:"value",
				data:alarmTypeArrayTemp,
				select:alarmTypeArrayTemp[0].value
				//选择事件不添加，暂不需要
			});
		}
	}
}





//数据列报警来源格式化
function formatAlarmSource(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);//根据报警类型和报警来源获取单条数据
        if(dataTemp != null){
            return dataTemp.alarmSourceName;
        }
    }
}

//数据列报警类型格式化
function formatAlarmType(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);
        if(dataTemp != null){
            return dataTemp.alarmTypeName;
        }
    }
}

//数据列表报警次数格式化
function formatAlarmSum(value,rowData,rowIndex){
	var html = value +  '&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:getOneActiveAlarmInfo();">查看</a>';
	return html;
}

//新页面显示单条主动安全报警记录全部详细信息
function getOneActiveAlarmInfo(){
	try {
		var rowData = $("#adasAlarmData").datagrid("getSelected");
		var param = "?alarmIndex=" + rowData.alarmIndex + "&id=" + rowData.id;
		var url = "<%=ApplicationPath%>/activeSafeAlarm/oneAdasAlarmInfo.action" + param;
		addTabToMainTabs(url,newPageTitle);
	} catch (error) {
		console.error("主动安全报警查询页面->显示单条报警记录信息错误：" + error);
	}
}

/*
在主框架中添加一个选项卡
*/
function addTabToMainTabs(url,title){
	try {
        //动态页面添加
        var content = '<iframe scrolling="auto" frameborder="0"  src="' + url + '" style="width:100%;height:100%;"></iframe>';
        var mainTab = top.jQuery("#mainTab",parent.document);
        if(mainTab != undefined){
            if(mainTab.tabs('exists', title)){
                //选择面板
                mainTab.tabs('select', title);
                //刷新面板
                var tab = mainTab.tabs('getSelected');  
                mainTab.tabs('update', {
                    tab: tab,
                    options: {
                        title: title,
                        content:content
                    }
                });
            }else{
                //添加面板
                mainTab.tabs("add", {
                    title: title,
                    closable: true,
                    // id: 1,
                    content: content,//动态页面
                    // href:"hisrout.html"//如果是静态的页面，直接用href，不要用content
                })
            }
            
        }
    } catch (error) {
        console.error("报警记录查询中显示选项卡错误："+error);
    }
}

</script>
</head>

<body style="background-color:rgb(251,251,251);height:98%;width:99%;" class="base_ver_flexStartDiv_css">
	<!--工具条-->
	<div id="adasAlarmToobar" style="width:100%;" class="sh_css_basFontSize">
		<form id="adasQueryForm" action="<%=ApplicationPath%>/export.action">
			<input type="hidden" name="queryId" value="activeSafeAlarm.selectAdasAlarmPageDataFromAlarm2" />
			<input type="hidden" name="fileName" value="报警信息" />
			<input type="hidden" id="alarmType_1" name="alarmType" value="" />
			<input type="hidden" id="alarmSource" name="alarmSource" value="" />
			<input type="hidden" id="alarmSourceList" name="alarmSourceList" value="" />

			<!--上层按钮栏-->
			<div style="width:80%;margin-left: 15px;margin-top:5px;">
				<a id="btnExport" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-excel'" onclick="forExport();" ;">导出</a>
				&nbsp;&nbsp;
				<a id="btnReset" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-clear'" onclick="formReset();">重置</a>
			</div>
			<!--下层查询工具栏-->
			<hr>
			<div style="width:100%;height:45px;" class="base_hori_flexStartDiv_css">
				<!--左侧条件样式-->
				<div style="height:100%;margin-top:7px;margin-left:15px;" class="base_ver_Around_leftDiv_css">
					<div>
						组织
						<select id="depId" name="depId" style="width:170px;"></select>
						&nbsp;&nbsp;
						车辆
						<input type="text" id="plateNo" name="plateNo" style="width:100px;">
						&nbsp;&nbsp;
						起止时间
						<input type="text" name="startTime" id="startTime" class="datetimepicker" style="width:130px;"/>
						<span>-</span>
						<input type="text" name="endTime" id="endTime" class="datetimepicker" style="width:130px;" />
						&nbsp;&nbsp;
						速度>=
						<input type="text" id="ac_al_speed" name="speed" style="width:70px;">(km/h)
					</div>
					<div style="margin-top:7px;">
						报警类型
						<select id="alarmType"  style="width:120px;"></select>
					</div>
				</div>
				<!--右侧按钮-->
				<div style="margin-left:20px;" class="base_hori_flexCenterDiv_css">
					<!-- <a id="btnQuery" href="#" class="easyui-linkbutton " data-options="iconCls:'icon-search'">查询</a> -->
					<div id="btnQuery" class="sh_css_btn">
						<div class="ui-icon icon-search" style="width:16px;height:16px;"></div>
						<span>查询</span>
					</div>
				</div>
			</div>
		</form>
	</div>
	<!--报警数据表格dagagrid-->
	<table id="adasAlarmData" style="width:100%;">
		<thead>
			<tr>
				<th data-options="field:'name'" width="130">组织名称</th>
				<th data-options="field:'plateNo'" width="130">车牌号码</th>
				<th data-options="field:'alarmType',formatter:formatAlarmType" width="160">报警类型</th>
				<!-- <th data-options="field:'alarmSource',formatter:formatAlarmSource" width="160">报警来源</th> -->
				<th data-options="field:'alarmSum',formatter:formatAlarmSum" width="100">报警次数</th>
				<th data-options="field:'alarmTime'" width="225">报警时间</th>
				<th data-options="field:'location'" width="430">报警地点</th>
				<th data-options="field:'longitude'" width="130">经度</th>
				<th data-options="field:'latitude'" width="130">纬度</th>
				<th data-options="field:'speed'" width="100">车速(km/h)</th>
			</tr>
		</thead>
	</table>
</body>